package com.chris.code.generate.android;

import com.chris.assist.builders.android.base.supports.AndroidBaseBuildManager;
import com.chris.assist.builders.android.base.supports.AndroidModelBuildParams;
import com.chris.assist.config.Config;
import com.chris.code.generate.manager.LocalTestConfigBuilder;

/**
 * @author Chris Chan
 * Create On 2025/9/26 下午2:50
 * Use for: Android数据类型和接口调用资源创建示例
 * Explain:
 * 使用默认模板
 * 使用自定义模板需要在Config中设置模式和模板路径
 */
public class AndroidBaseBuildTest {
    public static void main(String[] args) {
        // 1. 获取配置
        Config config = LocalTestConfigBuilder.create().get();
        // 2. 创建
        buildAll(config);
    }

    /**
     * 创建CreateParam参数资源
     * 构建参数在构建器中默认创建
     * 以下所有资源的创建都有自定义模式和默认模式
     *
     * @param config
     */
    private static void buildCreateParamsWithDefault(Config config) {
        AndroidBaseBuildManager.get(config).matchTableNamePrefixes("trade_").createWebCreateParams();
    }

    /**
     * 创建CreateParam参数资源
     *
     * @param config
     */
    private static void buildCreateParams(Config config) {
        AndroidModelBuildParams buildParams = AndroidModelBuildParams.create()
                .setPackageName("models.params.create")
                .setModelSuffix("CreateParam")
                .setModelTagSuffix("数据创建参数");

        AndroidBaseBuildManager.get(config).matchTableNamePrefixes("trade_").createWebCreateParams(buildParams);
    }

    /**
     * 创建UpdateParam参数资源
     *
     * @param config
     */
    private static void buildUpdateParams(Config config) {
        AndroidModelBuildParams buildParams = AndroidModelBuildParams.create()
                .setPackageName("models.params.update")
                .setModelSuffix("UpdateParam")
                .setModelTagSuffix("数据更新参数");

        AndroidBaseBuildManager.get(config).matchTableNamePrefixes("trade_").createWebUpdateParams(buildParams);
    }

    /**
     * 创建SearchParam参数资源
     *
     * @param config
     */
    private static void buildSearchParams(Config config) {
        AndroidModelBuildParams buildParams = AndroidModelBuildParams.create()
                .setPackageName("models.params.search")
                .setModelSuffix("SearchParam")
                .setModelTagSuffix("数据查询参数");

        AndroidBaseBuildManager.get(config).matchTableNamePrefixes("trade_").createWebSearchParams(buildParams);
    }

    /**
     * 创建OrderParam参数资源
     *
     * @param config
     */
    private static void buildOrderParams(Config config) {
        AndroidModelBuildParams buildParams = AndroidModelBuildParams.create()
                .setPackageName("models.params.order")
                .setModelSuffix("OrderParam")
                .setModelTagSuffix("数据排序参数");

        AndroidBaseBuildManager.get(config).matchTableNamePrefixes("trade_").createWebOrderParams(buildParams);
    }

    /**
     * 创建Result结果资源
     *
     * @param config
     */
    private static void buildResults(Config config) {
        AndroidModelBuildParams buildParams = AndroidModelBuildParams.create()
                .setPackageName("models.result")
                .setModelSuffix("ResultParam")
                .setModelTagSuffix("数据结果参数");

        AndroidBaseBuildManager.get(config).matchTableNamePrefixes("trade_").createWebResults(buildParams);
    }

    /**
     * 创建数据类型资源
     *
     * @param config
     */
    private static void buildModels(Config config) {
        AndroidBaseBuildManager.get(config).matchTableNamePrefixes("trade_").createAllModels();
    }

    /**
     * 创建接口调用资源
     *
     * @param config
     */
    private static void buildApis(Config config) {
        AndroidBaseBuildManager.get(config)
                .matchTableNamePrefixes("trade_")
                .createApis();
    }

    /**
     * 两者一起创建
     *
     * @param config
     */
    private static void buildAll(Config config) {
        AndroidBaseBuildManager.get(config)
                .matchTableNamePrefixes("trade_")
                .createAllModels()
                .createApis();
    }
}
